#include"Epoller.hpp"
#include"Listener.hpp"
#include"Connection.hpp"
#include<memory>
#include<unordered_map>
class TcpServer
{
public:
    TcpServer()
    {}
    void Start()
    {
        while(true)
        {
            _epoller_ptr->WaitEvent();
        }
    }
    //向unordered_map中添加连接
    void AddConnection(std::shared_ptr<Connection>& conn)
    {
        int fd=conn->Fd();
        uint32_t events=conn->GetEvents();
        _epoller_ptr->AddEvent(fd,events);
        _connections[fd]=conn;
    }
    ~TcpServer()
    {}
private:
    //需要一个Epoll模型
    std::unique_ptr<Epoller> _epoller_ptr;
    //我们需要一个Listener来专门获取listenfd
    std::shared_ptr<Listener> _listener_ptr;
    //我们使用unordered_map管理Connection
    std::unordered_map<int,std::shared_ptr<Connection>> _connections;
};